using UnityEngine;

namespace GameToolkit
{

    /// <summary>
    /// 贴图分辨率
    /// </summary>
    public enum EMipmapResolution
    {
        x64 = 6,
        x128 = 7,
        x256 = 8,
        x512 = 9,
        x1024 = 10,
        x2048 = 11,
        x4096 = 12,
    }

    public enum EMipmapQuality
    {
        FullRes = 0,
        HalfRes = 1,
        QuaterRes = 2,
        EighthRes = 3,
    }

    /// <summary>
    /// 刷新回调接口
    /// </summary>
    public interface ITick
    {
        void OnTick(float deltaTime);
    }

    /// <summary>
    /// 有效性验证
    /// </summary>
    public interface IValidator
    {
        /// <summary>
        /// 实现该方法以判定对象是否有效。
        /// 默认情况下，对于非 Unity 对象，指对象是否不为空， 而 Unity 对象，则指对象不为空且没有被销毁
        /// </summary>
        bool IsValid { get; }
    }

    public enum EAxis
    {
        None = 0,
        X = 1,
        Y = 2,
        Z = 3,
    }

    /// <summary>
    /// 绑定 transform 组件
    /// </summary>
    public interface ITransformBinding
    {
        Transform transform { get; }
    }

    public interface IComponent : ITransformBinding
    {
        string name { get; }
        GameObject gameObject { get; }
        T GetComponent<T>();
    }

    // 骨骼绑定点
    public interface IAttachment : ITransformBinding
    {
    }

}
